﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using ReLogic.Graphics;
using System.Collections.Generic;
using Terraria;
using Terraria.DataStructures;
using Terraria.GameContent;
using Terraria.ID;
using Terraria.ModLoader;
using WorseGame.Common.Configs;

namespace WorseGame.Common.Players
{
    public class DanmakuPlayer : ModPlayer
    {
        private class Danmaku
        {
            public string Text;
            public Color Color;
            public Vector2 ScreenPos;
            public Vector2 Velocity;
            public float Scale;
            public int LifeTime;
        }
        #region 判定初次击败Boss
        private readonly HashSet<int> announcedBosses = [];
        private bool skeletronFirstEncounter = true; // 骷髅王
        #endregion      

        private readonly List<Danmaku> activeDanmaku = [];
        private int cooldown;
        private readonly Dictionary<string, string[]> danmakuLibrary = new()
        {
            ["hurt"] =
            [
                "建议改玩'看风景模拟器'",
                "或许扫雷更适合你？",
                "要不要试试Windows纸牌？",
                "建议从'如何移动角色'教程开始",
                "也许你该先学会用鼠标？",
                "建议从幼儿园难度开始",
                "要不要考虑玩挂机游戏？",
                "或许你更适合看别人玩？",
                "建议先练习'如何不被打中'",
                "要不咱们先从走路学起？",
                "就这？我奶奶打得都比你好",
                "你的操作让我想哭",
                "你是用脚在玩游戏吗？",
                "建议把难度调到'婴儿模式'",
                "这都能被打中？",
                "你的闪避键坏了吗？",
                "菜得抠脚",
                "你的操作像在抽筋",
                "建议卸载游戏",
                "这是人类能打出的操作？",
                "你是用脸在接技能吗？",
                "这操作烂得我都要吐了",
                "你玩游戏像脑瘫患者复健",
                "建议把手柄塞进py里玩",
                "你的技术让屎都显得有价值",
                "你妈生你时把游戏天赋扔胎盘里了吧",
                "你玩得像个智障晚期患者",
                "这操作简直是人类之耻",
                "建议去死一死再来玩",
                "你的技术让游戏想自杀",
                "你玩得像个脑残儿童",
                "这水平也好意思玩游戏？",
                "你手是长在ass上了吗？",
                "建议把游戏机砸了去要饭",
                "你玩得让我想砸显示器",
                "你爸妈后悔没把你射墙上",
                "这技术配活着都是浪费氧气",
                "你玩得像个唐氏儿",
                "建议去精神病院检查下脑子",
                "你的存在就是游戏界的灾难",
                "你玩得像个弱智",
                "这水平不如去死",
                "你手残得令人发指",
                "建议把游戏机吞了",
                "你玩得像个脑损伤患者",
                "这技术简直是人类的耻辱",
                "你妈知道你玩这么烂吗",
                "建议去重开人生",
                "你玩得让我想杀人",
                "你的技术让游戏想自毁",
                "系统检测到你的操作像被门夹过的猴子",
                "你的技术让游戏AI学会了如何更蠢",
                "这操作烂得让开发者想删游戏",
                "你的反应速度证明人类确实需要进化",
                "你的存档应该被标记为'人类退化样本'",
                "你的操作精度堪比醉酒的大猩猩",
                "这技术让'简单模式'都感到了冒犯",
                "你的游戏表现让Boss都开始同情你",
                "系统建议你改玩'看别人玩'模拟器",
                "你的操作记录被用作新型CPU压力测试",
                "你的技术让植物人玩家都感到被冒犯",
                "这水平让游戏想自动生成退款申请",
                "你的操作像把手柄绑在了死鱼身上",
                "你的反应延迟能让光速显得缓慢",
                "你的存在让游戏评分直接降了3分",
                "这操作烂得让系统跳过了受伤动画",
                "你的技术让新手教程都自愧不如",
                "你的存档被移动到'人类之耻'文件夹",
                "你的操作让游戏引擎开始怀疑人生",
                "你的技术证明AI统治世界的必要性",
                "你的操作记录被标记为'行为艺术'",
                "这水平让NPC都自动开启了无敌模式",
                "你的技术让残疾人康复中心看到了商机",
                "你的反应速度让冰川融化都显得迅速",
                "你的存在是对游戏手柄的侮辱",
                "这操作烂得让游戏想自动卸载",
                "你的技术让'不会玩'有了新定义",
                "你的表现让系统考虑给你钱求你别玩",
                "你的操作像被雷劈过的机器人",
                "你的技术让游戏难度自动升到'不可能'",
                "你的操作精度堪比盲人射箭",
                "这水平让杀毒软件误以为是病毒行为",
                "你的技术让开发者连夜删了自己的简历",
                "你的表现让游戏想给你单独开发'看戏模式'",
                "你的操作像被镇静剂打过的考拉",
                "你的技术让'菜'字有了全新的定义",
                "你的存在证明了游戏需要年龄限制",
                "这操作烂得让成就系统增加了'耻辱'分类",
                "你的技术让游戏想自动跳过你的回合",
                "你的表现让Boss都懒得放技能了",
                "系统判定：你的操作不配称为人类",
                "AI检测到你的手柄插在了石头上",
                "你的技术让游戏自动降低了画质以示抗议",
                "这操作烂得让开发者想删号重练",
                "你的反应速度重新定义了'延迟'这个词",
                "警告：检测到玩家大脑未连接",
                "你的技术让新手教程都羞愧地自尽了",
                "系统建议：改玩'看别人玩'模拟器",
                "你的操作记录被用作新型压力测试",
                "你的存在让游戏平衡师连夜改行",
                "你的技术让Boss都开始放水",
                "这水平让NPC主动给你送装备",
                "你的操作像被门夹过的机器人",
                "你的反应延迟能让光速显得缓慢",
                "你的存档被标记为'人类退化样本'",
                "这操作烂得让游戏想自动卸载",
                "你的技术让'简单模式'都感到了冒犯",
                "你的表现让系统考虑给你钱求你别玩",
                "你的操作像被雷劈过的遥控车",
                "你的技术让游戏难度自动升到'不可能'",
                "你的操作精度堪比盲人扔飞镖",
                "这水平让杀毒软件误以为是病毒",
                "你的技术让开发者连夜删简历",
                "你的表现让游戏想开发'观战模式'",
                "你的操作像被麻醉的大象",
                "你的技术让'菜'字有了新定义",
                "你的存在证明了游戏需要防沉迷",
                "这操作烂得让成就系统新增'耻辱'分类",
                "你的技术让游戏想跳过你的回合",
                "你的表现让Boss都懒得放技能",
                "系统检测到你的手柄由植物操作",
                "你的技术让AI学会了装死",
                "这操作烂得让物理引擎崩溃",
                "你的反应速度让树懒都自愧不如",
                "你的存档被移到'人类之耻'文件夹",
                "你的存在让游戏评分直降3分",
                "你的技术让残疾人康复中心看到商机",
                "这水平让游戏想自动生成退款页面",
                "你的操作像被砸过的键盘自动生成的",
                "你的技术让'不会玩'有了新标准",
                "你的操作记录被标记为'行为艺术'",
                "你的表现让NPC开启无敌模式",
                "这技术让新手教程自毁程序启动",
                "你的反应让冰川融化都显得迅速",
                "你的存在是对游戏手柄的侮辱",
                "这操作烂得跳过了受伤动画",
                "你的技术让游戏引擎怀疑人生",
                "你的表现证明AI统治的必要性",
                "你的操作像被电击的青蛙",
                "你的技术让游戏想自毁",
                "我是盲人，请问主播是爱慕吗",
                "系统建议：改玩4399小游戏",
                "傀儡的走位都比你好"
            ],
            ["death"] =
            [
                "又死了？真是毫不意外呢",
                "恭喜达成'专业送人头'成就",
                "你的墓碑可以开博物馆了",
                "这是你今天第几次见天使了？",
                "你的操作和你的智商很匹配",
                "建议改玩扫雷，那个简单",
                "死亡次数: ∞",
                "你的游戏风格很有创意 - 创意性地糟糕",
                "你的操作让我怀疑人生",
                "你的游戏技术像被诅咒了一样",
                "你是我见过最菜的玩家，没有之一",
                "你的操作烂得让系统都自动降低了难度",
                "建议把手剁了，用脚玩都比这强",
                "你的技术让游戏AI都学会了怎么犯蠢",
                "开发者看到你的操作连夜加了简单模式",
                "你的死亡录像被用作'如何不玩游戏'教材",
                "你的操作精度堪比脑血栓患者",
                "你玩游戏像帕金森病人拿手术刀",
                "你的技术让游戏平衡师直接辞职",
                "系统检测到你根本没有安装大脑",
                "你爸妈知道你把游戏玩成这样吗？",
                "你的智商是不是和你的死亡次数成反比？",
                "建议回娘胎重造，说不定能抢救一下",
                "你的反应速度证明人类确实是从植物进化来的",
                "你的操作证实了达尔文进化论的漏洞",
                "你玩游戏的样子像被门夹过的猴子",
                "你的技术证明人类确实应该被AI取代",
                "你的存在让游戏评分直接降了2分",
                "你的操作让开发商考虑退款给你求你别玩",
                "你成功把游戏玩成了残疾人康复训练",
                "Boss说杀你杀得都无聊了",
                "小怪看到你都懒得攻击了",
                "你的死亡让游戏成就系统增加了'耻辱'分类",
                "NPC说宁愿被删档也不想再看到你玩",
                "你的存档应该被当作病毒隔离",
                "游戏引擎为运行你的操作记录而崩溃",
                "你的技术让'简单模式'都感到被冒犯",
                "系统自动把你的操作归类为'行为艺术'",
                "你的游戏时长和死亡次数成正比，真是稳定",
                "建议游戏为你单独开发'看别人玩'模式",
                "你的操作让盲人玩家都感到被冒犯",
                "脑死亡患者看了你的操作都表示还能抢救",
                "植物人玩这个游戏都比你有希望通关",
                "你的技术让游戏难度自动升级到'不可能'",
                "系统检测到你玩游戏时把手柄绑在了狗身上",
                "你的操作记录被用作新型酷刑素材",
                "建议把你的游戏录像送去研究人类下限",
                "你的死亡动画因为太频繁被系统精简了",
                "游戏为了你的操作特别增加了'耻辱回放'功能",
                "你的技术让'不会玩'这个词显得太专业",
                "系统正在计算你的愚蠢程度...计算失败，溢出错误",
                "警告：你的操作可能导致游戏降级为Windows98版本",
                "错误代码：PLAYER_TOO_STUPID_TO_CONTINUE",
                "系统建议：请将游戏设备交给家里宠物操作",
                "你的操作触发了游戏自毁程序，开玩笑的（才怪）",
                "警告：继续这种操作可能导致游戏自动卸载",
                "系统已将你标记为'不可救药'类别",
                "你的存档已被移动到'人类之耻'文件夹",
                "游戏引擎为运行你的操作特别降低了帧率",
                "系统正在考虑给你颁发'反向通关'成就",
                "你的存在是对游戏产业的侮辱",
                "建议把你的操作刻在墓碑上警示后人",
                "你的技术让'菜'这个字显得太过优雅",
                "你的死亡记录被游戏公司列为商业机密",
                "你的操作让'不会玩'有了全新的定义",
                "系统检测到你玩游戏时把手柄插在了屁股上",
                "你的技术让游戏自动生成了退款申请",
                "你的存档被系统自动标记为'行为艺术实验'",
                "开发者看到你的操作连夜删除了自己的游戏",
                "你的存在证明了人类确实需要AI统治",
                "这是行为艺术吗？",
                "你的死亡姿势很有创意",
                "你的死亡动作可以参加现代舞比赛",
                "你死亡的优雅程度令人惊叹",
                "这是新型死亡表演艺术吗？",
                "你的死亡姿势打破了物理定律",
                "你死亡的瞬间值得被做成GIF",
                "你的死亡方式应该被载入史册",
                "你的死亡美学独树一帜",
                "你的死亡动作让Boss都鼓掌了",
                "建议去玩'不要死'模拟器",
                "你的技术让怪物都感动哭了",
                "你的游戏水平稳定得可怕 - 一直这么菜",
                "你的死亡效率令人印象深刻",
                "你死亡的速度比我写代码还快",
                "你的技术让新手教程都自愧不如",
                "你的死亡频率可以申请专利",
                "你的操作让'不会玩'有了新定义",
                "你的技术让游戏难度自动+100",
                "你的死亡记录打破了服务器存储限制",
                "你死得像被香蕉皮滑倒的超级英雄",
                "你的死亡像长颈鹿玩跳房子",
                "你挂掉的样子像熊猫试图后空翻",
                "你的死亡姿势像考拉从树上掉下来",
                "你死得像企鹅参加短跑比赛",
                "你的技术像水母玩杂技",
                "你死亡的样子像树懒遇到闪电",
                "你的操作像鸵鸟试图飞翔",
                "你死得像金鱼尝试马拉松",
                "你的技术像章鱼弹钢琴",
                "或许你该试试无敌修改器？",
                "建议从'如何活着'教程开始",
                "要不要考虑玩挂机游戏？",
                "也许你更适合看别人玩？",
                "建议从'走路不摔跤'开始练习",
                "要不要试试创意模式？",
                "或许你该绑定复活点再玩？",
                "建议先学会'站着不动也能赢'",
                "要不咱们先从'如何呼吸'学起？",
                "建议改玩'自动战斗'游戏",
                "你的死亡让量子计算机都死机了",
                "你的技术让黑洞都自愧不如",
                "你的操作让时光倒流了",
                "你的死亡创造了新的宇宙常数",
                "你的技术让平行宇宙都震惊了",
                "你的操作让AI开始怀疑生命",
                "你的死亡让开发者想转行",
                "你的技术让游戏引擎崩溃了",
                "你的操作让显卡都哭了",
                "你的死亡让服务器都笑了",
                "你在实践'向死而生'的哲学吗？",
                "你的死亡频率堪比印度电影",
                "你在表演'无限复活'的魔术吗？",
                "你的技术让'菜'字有了新写法",
                "你的死亡艺术堪比当代毕加索",
                "你在测试游戏的复活系统吗？",
                "你的操作让'送人头'成为艺术",
                "你的技术重新定义了'游戏结束'",
                "你的死亡让'失败'变得华丽",
                "你在创作'死亡的一百种方式'吗？",
                "Boss都懒得收你的人头了",
                "怪物杀你都杀出罪恶感了",
                "你的死亡让游戏变简单了",
                "你的技术让教程NPC想退休",
                "你的操作让新手教程都羞愧",
                "你的死亡让难度系统困惑",
                "你的技术让AI都学会了菜",
                "你的操作让BUG都自愧不如",
                "你的死亡让游戏想自动卸载",
                "你的技术让'手残'有了新标准",
                "本次死亡原因：太菜",
                "死亡分析报告：100%玩家问题",
                "系统诊断：晚期手残",
                "死亡总结：操作过于抽象",
                "死亡原因：游戏太难(才怪)",
                "技术评估：建议转行",
                "死亡记录：第114514次",
                "系统建议：换个游戏吧",
                "死亡评级：专业级菜鸟",
                "成就解锁：死亡大师",
                "你的死亡让这个游戏变成了喜剧",
                "你的技术重新定义了'游戏体验'",
                "你的操作让'失败'变成了艺术",
                "你的死亡让'菜'成为了传奇",
                "你的技术让游戏变成了搞笑视频",
                "你的操作让'不会玩'有了新高度",
                "你的死亡让怪物都开始教你玩",
                "你的技术让游戏提示都无语了",
                "你的操作让'新手'显得太专业",
                "你的死亡让'游戏结束'变成解脱",
                "死亡回放已保存至'搞笑集锦'",
                "你的操作将被用作反面教材",
                "你的死亡姿势已申请专利",
                "系统已将你标记为'行走的墓碑'",
                "你的技术让'菜'有了新定义",
                "死亡原因：未知(其实就是你菜)",
                "你的操作让游戏想退款给你",
                "你的死亡让Boss都感到尴尬",
                "系统正在考虑给你自动通关",
                "你的技术让'游戏结束'变成祝福"
            ],
            ["lava"] =
            [
                "岩浆浴舒服吗？建议加点沐浴露",
                "岩浆：又来了个免费烤肉",
                "你是来测试岩浆温度计的吗？",
                "建议改行当铁匠，反正你爱泡岩浆",
                "岩浆：'谢谢惠顾，下次再来'",
                "你的脚底板还好吗？",
                "岩浆跳水得分：0.0（裁判都哭了）",
                "岩浆池里有没有找到隐藏宝藏啊？",
                "这是新型桑拿体验吗？",
                "岩浆：'欢迎光临地狱温泉'",
                "你的耐热能力堪比冰淇淋",
                "岩浆都觉得你烫嘴",
                "建议改玩'岩浆冲浪模拟器'",
                "岩浆：'又一位勇士来送死了'",
                "你的岩浆抗性是不是负数？",
                "岩浆：'别跳了，我们不收门票'",
                "你的脚趾甲还在吗？",
                "岩浆：'这位顾客烤得有点焦'",
                "建议去火山口开直播",
                "岩浆：'您的订单：一份烤玩家'",
                "你是来给岩浆加热的吗？",
                "岩浆：'谢谢你的体温，我们暖和多了'",
                "你的岩浆适应能力堪比雪人",
                "岩浆：'又一位自愿成为燃料的勇者'",
                "建议改玩'不要跳进岩浆'模拟器",
                "岩浆：'您的死亡方式：外焦里嫩'",
                "你是岩浆的新晋调味料吗？",
                "岩浆：'欢迎来到自助烧烤区'",
                "你的岩浆抗性比纸还低",
                "岩浆：'感谢您的热情参与（物理）'",
                "建议改行当熔岩灯",
                "岩浆：'又一位玩家自愿成为岩浆的祭品'",
                "你的岩浆适应训练进展如何？（0%）",
                "岩浆：'您的死亡原因：太热了'",
                "你是来测试岩浆粘度的吗？",
                "岩浆：'又一位玩家尝试岩浆泡澡'",
                "你的岩浆抗性：-100%",
                "岩浆：'您的死亡姿势：自由落体式'",
                "建议改玩'岩浆躲避模拟器'",
                "岩浆：'又一位玩家证明了岩浆很烫'",
                "你的岩浆适应能力：不存在",
                "岩浆：'您的死亡记录：第114514次'",
                "你是来给岩浆增加风味的吗？",
                "岩浆：'又一位玩家尝试岩浆游泳'",
                "你的岩浆抗性：比冰块还低",
                "岩浆：'您的死亡原因：好奇心太重'",
                "建议改玩'不要碰岩浆'模拟器",
                "岩浆：'又一位玩家证明了岩浆的威力'",
                "你的岩浆适应能力：-∞",
                "岩浆：'您的死亡方式：瞬间蒸发'",
                "你是来测试岩浆密度的吗？",
                "岩浆：'又一位玩家尝试岩浆潜水'",
                "你的岩浆抗性：比雪还低",
                "岩浆：'您的死亡原因：太冲动'",
                "建议改玩'岩浆生存挑战'",
                "岩浆：'又一位玩家证明了岩浆不可触碰'",
                "你的岩浆适应能力：零",
                "岩浆：'您的死亡姿势：空中转体三周半'",
                "你是来测试岩浆硬度的吗？",
                "岩浆：'又一位玩家尝试岩浆冲浪'",
                "你的岩浆抗性：比空气还低",
                "岩浆：'您的死亡原因：物理法则'",
                "建议改玩'岩浆跑酷模拟器'",
                "岩浆：'又一位玩家证明了岩浆的杀伤力'",
                "你的岩浆适应能力：不存在",
                "岩浆：'您的死亡方式：瞬间碳化'",
                "你是来测试岩浆颜色的吗？",
                "岩浆：'又一位玩家尝试岩浆滑梯'",
                "你的岩浆抗性：负数",
                "岩浆：'您的死亡原因：太勇敢'",
                "建议改玩'岩浆躲避球'",
                "岩浆：'又一位玩家证明了岩浆的威力'",
                "你的岩浆适应能力：-100%",
                "岩浆：'您的死亡方式：瞬间消失'"
            ],
            ["fall"] =
            [
                "重力：1，玩家：0",
                "你的降落伞呢？忘家里了？",
                "地心引力对你特别有效啊",
                "摔得漂亮，0分！",
                "建议学习牛顿第一定律",
                "地面：我又赢了",
                "你的膝盖还好吗？",
                "这是高空跳水训练吗？",
                "摔跤冠军非你莫属",
                "重力是你的宿敌吗？",
                "建议改玩'无重力模拟器'",
                "你的跌落姿势像块砖头",
                "地面：'欢迎光临，请支付HP'",
                "你的缓冲能力堪比混凝土",
                "这是新型自杀方式吗？",
                "地面：'又一位玩家自愿成为地毯'",
                "你的跌落抗性：零",
                "建议改行当陨石",
                "地面：'您的死亡方式：脸着地'",
                "你是来测试地面硬度的吗？",
                "地面：'又一位玩家证明了重力存在'",
                "你的跌落适应能力：不存在",
                "地面：'您的死亡原因：太冲动'",
                "建议改玩'不要跳楼'模拟器",
                "地面：'又一位玩家证明了地心引力'",
                "你的跌落抗性：负数",
                "地面：'您的死亡姿势：自由落体'",
                "你是来测试跌落伤害的吗？",
                "地面：'又一位玩家尝试人体炮弹'",
                "你的跌落适应能力：-100%",
                "地面：'您的死亡原因：太勇敢'",
                "建议改玩'跌落生存挑战'",
                "地面：'又一位玩家证明了物理法则'",
                "你的跌落抗性：比纸还低",
                "地面：'您的死亡方式：瞬间扁了'",
                "你是来测试地面弹性的吗？",
                "地面：'又一位玩家尝试自由落体'",
                "你的跌落适应能力：零",
                "地面：'您的死亡原因：太冲动'",
                "建议改玩'跌落跑酷模拟器'",
                "地面：'又一位玩家证明了跌落伤害'",
                "你的跌落抗性：不存在",
                "地面：'您的死亡方式：瞬间落地'",
                "你是来测试跌落速度的吗？",
                "地面：'又一位玩家尝试人体炮弹'",
                "你的跌落适应能力：负数",
                "地面：'您的死亡原因：太勇敢'",
                "建议改玩'跌落躲避球'",
                "地面：'又一位玩家证明了物理法则'",
                "你的跌落抗性：比空气还低",
                "地面：'您的死亡方式：瞬间消失'"
            ],
            ["drowning"] =
            [
                "鱼：'欢迎加入海洋生物行列'",
                "你的游泳技术像块石头",
                "建议改玩'陆地模拟器'",
                "水：'又一位玩家自愿成为鱼饵'",
                "你的肺活量：0",
                "这是新型潜水挑战吗？",
                "水：'您的死亡方式：咕噜咕噜'",
                "你是来测试水压的吗？",
                "水：'又一位玩家证明了人类不能呼吸水'",
                "你的水下适应能力：不存在",
                "水：'您的死亡原因：太冲动'",
                "建议改玩'不要溺水'模拟器",
                "水：'又一位玩家证明了水的威力'",
                "你的溺水抗性：负数",
                "水：'您的死亡姿势：自由下沉'",
                "你是来测试水下呼吸的吗？",
                "水：'又一位玩家尝试成为鱼'",
                "你的溺水适应能力：-100%",
                "水：'您的死亡原因：太勇敢'",
                "建议改玩'水下生存挑战'",
                "水：'又一位玩家证明了人类需要氧气'",
                "你的溺水抗性：比鱼还低",
                "水：'您的死亡方式：瞬间窒息'",
                "你是来测试水深的吗？",
                "水：'又一位玩家尝试水下生活'",
                "你的溺水适应能力：零",
                "水：'您的死亡原因：太冲动'",
                "建议改玩'水下跑酷模拟器'",
                "水：'又一位玩家证明了水的杀伤力'",
                "你的溺水抗性：不存在",
                "水：'您的死亡方式：瞬间下沉'",
                "你是来测试水流速度的吗？",
                "水：'又一位玩家尝试成为潜水员'",
                "你的溺水适应能力：负数",
                "水：'您的死亡原因：太勇敢'",
                "建议改玩'水下躲避球'",
                "水：'又一位玩家证明了水的威力'",
                "你的溺水抗性：比空气还低",
                "水：'您的死亡方式：瞬间消失'"
            ],
            ["burning"] =
            [
                "BBQ时间到！你是今天的烤肉",
                "你的耐热度堪比冰淇淋",
                "建议改行当火柴，一点就着",
                "火焰：'谢谢你的热情参与（物理）'",
                "你的防火措施：不存在",
                "这是新型桑拿体验吗？",
                "火焰：'又一位自愿成为燃料的勇者'",
                "你的燃烧抗性：-100%",
                "建议改玩'防火模拟器'",
                "火焰：'您的死亡方式：外焦里嫩'",
                "你是火焰的新晋调味料吗？",
                "火焰：'欢迎来到自助烧烤区'",
                "你的防火能力比纸还低",
                "火焰：'感谢您的热情（字面意思）'",
                "建议改行当火炬",
                "火焰：'又一位玩家自愿成为祭品'",
                "你的耐热训练进展如何？（0%）",
                "火焰：'您的死亡原因：太热了'",
                "你是来测试火焰温度的吗？",
                "火焰：'又一位玩家尝试玩火'",
                "你的燃烧抗性：不存在",
                "火焰：'您的死亡姿势：人形火炬'",
                "建议改玩'不要玩火'模拟器",
                "火焰：'又一位玩家证明了火焰很烫'",
                "你的耐热能力：零",
                "火焰：'您的死亡记录：第114514次'",
                "你是来给火焰增加风味的吗？",
                "火焰：'又一位玩家尝试火中取栗'",
                "你的防火能力：比雪还低",
                "火焰：'您的死亡原因：好奇心太重'",
                "建议改玩'防火生存挑战'",
                "火焰：'又一位玩家证明了火焰的威力'",
                "你的耐热能力：-∞",
                "火焰：'您的死亡方式：瞬间碳化'",
                "你是来测试火焰颜色的吗？",
                "火焰：'又一位玩家尝试火焰冲浪'",
                "你的燃烧抗性：负数",
                "火焰：'您的死亡原因：太冲动'",
                "建议改玩'火焰躲避球'",
                "火焰：'又一位玩家证明了火焰不可触碰'",
                "你的耐热能力：不存在",
                "火焰：'您的死亡姿势：空中转体三周半'",
                "你是来测试火焰硬度的吗？",
                "火焰：'又一位玩家尝试火焰滑梯'",
                "你的防火能力：比空气还低",
                "火焰：'您的死亡原因：物理法则'",
                "建议改玩'火焰跑酷模拟器'",
                "火焰：'又一位玩家证明了火焰的杀伤力'",
                "你的耐热能力：-100%",
                "火焰：'您的死亡方式：瞬间消失'",
                "你是来测试火焰密度的吗？",
                "火焰：'又一位玩家尝试火焰潜水'",
                "你的燃烧抗性：零",
                "火焰：'您的死亡原因：太勇敢'",
                "建议改玩'火焰生存挑战'",
                "火焰：'又一位玩家证明了火焰的威力'",
                "你的耐热能力：不存在",
                "火焰：'您的死亡方式：瞬间蒸发'",
                "你是来测试火焰粘度的吗？",
                "火焰：'又一位玩家尝试火焰滑翔'",
                "你的防火能力：负数",
                "火焰：'您的死亡原因：太冲动'",
                "建议改玩'火焰躲避模拟器'",
                "火焰：'又一位玩家证明了火焰不可触碰'",
                "你的耐热能力：-∞",
                "火焰：'您的死亡方式：瞬间碳化'"
            ],
            ["spaceDeath"] =
            [
                "NASA 正在分析你的死法：'样本过于愚蠢'",
                "你的氧气策略：'憋气直到通关'",
                "太空服厂商拒绝理赔：'故意送死不算意外'",
                "国际空间站收到警报：'又一个裸飘人类'",
                "霍金摇头：'你证明了平行宇宙理论——因为你的智商显然不在这个宇宙'",
                "外星人直播弹幕：'地球人又来自杀了，打赏火箭×1'",
                "你的遗言：'这陨石...能卖钱吗...（窒息）'",
                "马斯克发推：'我们的宇航服防傻逼功能仍需改进'",
                "太空葬礼仪程单：'死因：忘记自己需要呼吸'",
                "你的墓碑：'这里躺着一位牛顿定律的叛徒（落地时已冻结）'",
                "空间站日志：'第42次观测到人类试图用肺储存太空'",
                "物理老师痛哭：'我教过你万有引力，但没教你去舔真空'",
                "你的大脑：'缺氧中...终于和你的操作水平匹配了'",
                "星际差评：'1星，太空没有复活点，差评！'",
                "NASA 训练手册新增章节：'如何防止玩家把太空当游泳池'",
                "外星考古学家发现你的尸体：'原始文明的自杀仪式标本'",
                "你的遗物：'一罐没开封的氧气（标签：紧急时用，但你死了才紧急）'",
                "太空保险公司条款更新：'禁止智障客户投保'",
                "你的死亡回放被命名为：'论人类如何用脸刹车陨石'",
                "地球广播：'寻人启事：某玩家在太空走失，特征：不会呼吸'",
                "SpaceX 回收火箭时发现了你的尸体：'附加载荷：人类迷惑行为'",
                "你的临终遗愿：'把我的骨灰撒向太阳（已完成，因你正在坠落）'",
                "黑洞发来贺电：'感谢为宇宙熵增做出贡献'",
                "你的死亡证明：'直接死因：真空；根本死因：脑抽'",
                "星际法庭判决：'因过度侮辱氧气，判处永久窒息'",
                "你的太空舱黑匣子录音：'等等，我是不是该带个氧气——（哔——）'",
                "三体人评论：'地球人脱水技术比我们先进（指你变成干尸）'",
                "你的尸体成为新星座：'天秤座之找死的人'",
                "宇航局公告：'今日太空垃圾+1（分类：有机）'",
                "你的传记书名：《我在太空当人体卫星——然后死了》",
                "外星儿童频道：'今日科学实验：人类如何在真空中变成冻干食品'",
                "你的Steam成就解锁：'真空保鲜大师（死后尸体完好）'",
                "冥王星发来慰问：'虽然我被踢出行星界，但至少我不会窒息'",
                "你的临终直播标题：'挑战用肺过滤宇宙射线（失败）'",
                "星际网红点赞：'这波肉身登陆太阳的操作，我给满分！'",
                "你的墓志铭：'这里安息着一位反向宇航员——把太空变成了墓地'",
                "空间站AI吐槽：'检测到人类第114次忘记呼吸，建议安装自动续命按钮'",
                "你的死亡被写入教科书：《论自信与缺氧的关系》",
                "外星动物园新展牌：'地球人标本（习性：擅长在太空自杀）'",
                "你的最后一条消息：'发现稀有矿石！（信号中断）'",
                "银河系热搜：#地球人又双叒忘记氧气不是选修课#",
                "你的尸体被做成NFT：'独一无二的太空干尸（附带死因：蠢）'",
                "火星车拍到你：'检测到有机体，成分：30%勇气，70%愚蠢'",
                "你的临终感悟：'原来太空...真的没有氧气...（断气）'",
                "星际救援队放弃搜救：'目标特征：死得过于明显'",
                "你的死亡被改编成电影：《缺氧：一段关于忘记呼吸的史诗》",
                "太阳系广播：'注意：近期太空垃圾含有人类残骸，进食前请加热'",
                "你的骨灰盒：'内含：真空、遗憾、和没带氧气罐的悔恨'",
                "外星科学家论文：《地球人为何总在太空表演窒息艺术》",
                "你的Steam评测：'游戏难度过高（实际是我忘了呼吸）'",
                "冥王星建议：'下次试试带脑子，或者至少带个氧气瓶'",
                "你的死亡被刻在纪念碑上：'纪念一位试图用肺征服真空的勇士'",
                "银河系交通委提醒：'太空行车不规范，亲人泪洒全宇宙'",
                "你的临终遗言：'至少...我看到了星星...（瞳孔扩散）'",
                "三体人给你立像：'纪念地球最诚实的玩家——死因和智商完全匹配'",
                "你的尸体成为旅游景点：'快看！这就是那个以为太空有空气的傻子！'",
                "NASA 新规：'禁止玩家在未通过'如何呼吸'考试前进入太空'",
                "你的死亡被载入《人类迷惑行为大全》太空篇第一章",
                "外星幼儿园教材：'看图说话：这个地球人为什么死了？答：他忘了喘气'",
                "你的骨灰撒向太空时，氧气分子集体避让：'晦气！'",
                "太阳系公告：'新增安全警告：不要试图用脸接真空'",
                "你的临终直播收益：'观众打赏氧气罐×0，嘲笑×999+'",
                "黑洞发表声明：'拒收该玩家——智商不足无法压缩'"
            ],
            ["skeletronFirst"] =
            [
                "桑百颗够吗？应该够吧。来吧↑↓逝一下米妮↑↓",
                "初尤：又是这个囊的过分的Boss！"
            ],
        };
        public override void ModifyHitByNPC(NPC npc, ref Player.HurtModifiers modifiers)
        {
            if (SpecialConfig.Instance.VideoBarrageTaunts)
            {
                if (cooldown <= 0)
                {
                    SpawnDanmaku("hurt");
                    cooldown = 60;
                }
            }
        }
        public override void ModifyHitByProjectile(Projectile proj, ref Player.HurtModifiers modifiers)
        {
            if (SpecialConfig.Instance.VideoBarrageTaunts)
            {
                if (cooldown <= 0)
                {
                    SpawnDanmaku("hurt");
                    cooldown = 60;
                }
            }
        }

        public override void Kill(double damage, int hitDirection, bool pvp, PlayerDeathReason damageSource)
        {
            if (SpecialConfig.Instance.VideoBarrageTaunts)
            {
                if (damageSource.SourceOtherIndex == 0)
                {
                    SpawnDanmaku("fall");
                }
                else if (damageSource.SourceOtherIndex == 1)
                {
                    SpawnDanmaku("drowning");
                }
                else if (damageSource.SourceOtherIndex == 2)
                {
                    SpawnDanmaku("lava");
                }
                else if (damageSource.SourceOtherIndex == 8)
                {
                    SpawnDanmaku("burning");
                }
                else if (damageSource.SourceOtherIndex == 19)
                {
                    SpawnDanmaku("spaceDeath");
                }
                else
                {
                    SpawnDanmaku("death");
                }
            }
        }
        public override void OnEnterWorld()
        {
            skeletronFirstEncounter = !NPC.downedBoss3;
        }
        public override void PostUpdate()
        {
            if (SpecialConfig.Instance.VideoBarrageTaunts)
            {
                CheckBossSpawn();
                for (int i = 0; i < activeDanmaku.Count; i++)
                {
                    activeDanmaku[i].ScreenPos += activeDanmaku[i].Velocity;
                    activeDanmaku[i].LifeTime--;
                    if (activeDanmaku[i].LifeTime <= 0)
                    {
                        activeDanmaku.RemoveAt(i--);
                    }
                }
                if (cooldown > 0)
                {
                    cooldown--;
                }
            }
        }
        private void CheckBossSpawn()
        {
            if (SpecialConfig.Instance.VideoBarrageTaunts)
            {
                for (int i = 0; i < Main.maxNPCs; i++)
                {
                    NPC npc = Main.npc[i];
                    if (npc.active && npc.type == NPCID.SkeletronHead && !announcedBosses.Contains(npc.whoAmI))
                    {
                        if (npc.alpha < 50 && npc.Distance(Player.Center) < 3000f)
                        {
                            if (skeletronFirstEncounter)
                            {
                                if (cooldown <= 0)
                                {
                                    SpawnDanmaku("skeletronFirst");
                                    cooldown = 60;
                                }
                                skeletronFirstEncounter = false;
                            }
                            announcedBosses.Add(npc.whoAmI);
                        }
                    }
                }
                announcedBosses.RemoveWhere(id => !Main.npc[id].active);
            }
        }
        private void SpawnDanmaku(string category)
        {
            if (danmakuLibrary.TryGetValue(category, out var texts))
            {
                activeDanmaku.Add(new Danmaku
                {
                    Text = texts[Main.rand.Next(texts.Length)],
                    Color = Color.White,
                    ScreenPos = new Vector2(Main.screenWidth + 50, Main.rand.Next(50, 200)),
                    Velocity = new Vector2(-(3f + Main.rand.NextFloat(2f)), 0),
                    Scale = 1f + Main.rand.NextFloat(0.5f),
                    LifeTime = 600
                });
            }
        }
        public override void ModifyDrawInfo(ref PlayerDrawSet drawInfo)
        {
            if (SpecialConfig.Instance.VideoBarrageTaunts)
            {
                if (activeDanmaku.Count != 0)
                {
                    Main.spriteBatch.End();
                    Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, null, Main.GameViewMatrix.TransformationMatrix);
                    foreach (var dm in activeDanmaku)
                    {
                        DrawDanmaku(dm);
                    }
                    Main.spriteBatch.End();
                    Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, null, Main.Transform);
                }
            }
        }

        private static void DrawDanmaku(Danmaku dm)
        {
            Vector2 origin = FontAssets.MouseText.Value.MeasureString(dm.Text) * 0.5f;
            Color color = dm.Color * (dm.LifeTime / 300f);
            for (int i = 0; i < 4; i++)
            {
                Main.spriteBatch.DrawString(FontAssets.MouseText.Value, dm.Text, dm.ScreenPos + (MathHelper.PiOver2 * i).ToRotationVector2() * 2f, Color.Black * 0.5f, 0f, origin, dm.Scale, SpriteEffects.None, 0f);
            }
            Main.spriteBatch.DrawString(FontAssets.MouseText.Value, dm.Text, dm.ScreenPos, color, 0f, origin, dm.Scale, SpriteEffects.None, 0f);
        }
    }
}